op {
  graph_op_name: "BlockLSTMGrad"
  visibility: HIDDEN
  in_arg {
    name: "seq_len_max"
    description: <<END
Maximum time length actually used by this input. Outputs are padded
with zeros beyond this length.
END
  }
  in_arg {
    name: "x"
    description: <<END
The sequence input to the LSTM, shape (timelen, batch_size, num_inputs).
END
  }
  in_arg {
    name: "cs_prev"
    description: <<END
Value of the initial cell state.
END
  }
  in_arg {
    name: "h_prev"
    description: <<END
Initial output of cell (to be used for peephole).
END
  }
  in_arg {
    name: "w"
    description: <<END
The weight matrix.
END
  }
  in_arg {
    name: "wci"
    description: <<END
The weight matrix for input gate peephole connection.
END
  }
  in_arg {
    name: "wcf"
    description: <<END
The weight matrix for forget gate peephole connection.
END
  }
  in_arg {
    name: "wco"
    description: <<END
The weight matrix for output gate peephole connection.
END
  }
  in_arg {
    name: "b"
    description: <<END
The bias vector.
END
  }
  in_arg {
    name: "i"
    description: <<END
The input gate over the whole time sequence.
END
  }
  in_arg {
    name: "cs"
    description: <<END
The cell state before the tanh over the whole time sequence.
END
  }
  in_arg {
    name: "f"
    description: <<END
The forget gate over the whole time sequence.
END
  }
  in_arg {
    name: "o"
    description: <<END
The output gate over the whole time sequence.
END
  }
  in_arg {
    name: "ci"
    description: <<END
The cell input over the whole time sequence.
END
  }
  in_arg {
    name: "co"
    description: <<END
The cell after the tanh over the whole time sequence.
END
  }
  in_arg {
    name: "h"
    description: <<END
The output h vector over the whole time sequence.
END
  }
  in_arg {
    name: "cs_grad"
    description: <<END
The current gradient of cs.
END
  }
  in_arg {
    name: "h_grad"
    description: <<END
The gradient of h vector.
END
  }
  out_arg {
    name: "x_grad"
    description: <<END
The gradient of x to be back-propped.
END
  }
  out_arg {
    name: "cs_prev_grad"
    description: <<END
The gradient of cs_prev to be back-propped.
END
  }
  out_arg {
    name: "h_prev_grad"
    description: <<END
The gradient of h_prev to be back-propped.
END
  }
  out_arg {
    name: "w_grad"
    description: <<END
The gradient for w to be back-propped.
END
  }
  out_arg {
    name: "wci_grad"
    description: <<END
The gradient for wci to be back-propped.
END
  }
  out_arg {
    name: "wcf_grad"
    description: <<END
The gradient for wcf to be back-propped.
END
  }
  out_arg {
    name: "wco_grad"
    description: <<END
The gradient for wco to be back-propped.
END
  }
  out_arg {
    name: "b_grad"
    description: <<END
The gradient for w to be back-propped.
END
  }
  attr {
    name: "use_peephole"
    description: <<END
Whether to use peephole weights.
END
  }
  summary: "Computes the LSTM cell backward propagation for the entire time sequence."
  description: <<END
This implementation is to be used in conjunction of LSTMBlock.
END
}
